//注册的操作，都挂载到user这个对象上
//随后，如果有关于注册的操作，是不是我们就可以直接调用这个对象

//连接数据库
var mongodb = require('./db');
//我在写这个对象的时候，逼着我是不是就要考虑有哪些数据啊？
function User(user){
    //对象，先写这个属性
    this.name = user.name;
    this.password = user.password;
    this.email = user.email;
}
//注册信息的保存
User.prototype.save = function(callback){
    //1.第一步，收集数据
    //2.第二步，打开数据库
    //3.第三步，打卡数据库中的Users集合
    //4.将数据写入users集合当中去
    var user = {
        name:this.name,
        password:this.password,
        email:this.email
    };
    //打开数据库myblog。。db是显示当前数据库里的内容
    mongodb.open(function(err,db){
        if(err){
            //res.flash('error','数据库连接失败');
            return callback(err);
        }
        //打开数据库中的users集合。。collection储存着users的数据
        //(也可理解为db数据库通过collection方法创建一个users集合，用来收集users集合的信息)
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            //console.log(collection);
            //将user对象的数据通过insert方法写入users集合当中去，并执行后边的回调函数。
            //-----????????? data为插入后的users集合
            collection.insert(user,function(err,data){
                //无论正确与否，数据库都需要关闭
                mongodb.close();
                if(err){
                    return callback(err);
                }else{
                    callback(null,data[0]);
/*----------------data[0]为undefined。????*/
                }
            })
        })
    })
};
//获取到某个注册用户信息的。。。这个是用于当登录的时候进行执行使用
User.get = function(name,callback){
    //第一步，打开数据库
    //第二步，打开数据库当中的users集合
    //第三步，看有没有跟name相同的用户
    //第四步，返回这个用户信息
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        //db.collection是用来读取users的集合的
        //collection是users集合当中所有的数据
        /*console.log(db);
        console.log('22222222222222');*/
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            /*console.log(collection);
            console.log('collection33333333333333');*/
            //findOne获取到的是具体的某一个用户的注册信息，将这个注册信息返回给回调函数
            collection.findOne({name:name},function(err,user){
                if(err){
                    return callback(err);
                }
                callback(null,user);
                /*console.log(name);
                console.log('-----------');
                console.log(user);
                console.log('user444444444444444');*/
            })
        })
    })
};
//封装成模块，方便调用
module.exports = User;